package com.itheima;

import java.util.Scanner;
/*
    分析并完成以下需求:

    1.我国的居民身份证号码，由17位数字本体码，和1位数字校验码组成
    2.请定义方法判断用户输入的身份证号码是否合法，并在主方法中调用方法测试结果
    规则为：号码为18位，不能以数字0开头，前17位只可以是数字，最后一位可以是数字或者大写字母X
 */
public class day18 {
    public static void main(String[] args) {

        for (; ; ) {
            //提示获取省份证号
            System.out.println("请输入18位身份证号：");
            String id = new Scanner(System.in).nextLine();

            //调用方法
            if (method(id)) {
                System.out.println("满足条件");
                break;
            } else {
                System.out.println("您输入有误！");
                System.out.println("规则为：号码为18位，不能以数字0开头，前17位只可以是数字，最后一位可以是数字或者大写字母X");
            }
        }

    }

    //返回值类型：boolean 参数列表：String id
    public static boolean method(String id) {
        //定义flag，初始值为false，代表不满足
        boolean flag = false;

        //不为空判断
        if (id == null) {
            return false;
        }

        //长度判断
        if (id.length() != 18) {
            return false;
        }

        //开头判断
        if (id.startsWith("0")) {
            return false;
        }

        //遍历字符串
        for (int i = 0; i < id.length(); i++) {
            //获取当前字符
            char c = id.charAt(i);
            //最后一位
            if (i == id.length() - 1) {
                //不是数组或者X
                if (c < '0' || c > '9' && c != 'X') {
                    return false;
                }
            } else {
                //前17位只可以是数字
                if (c < '0' || c > '9' ) {
                    return false;
                }
            }
        }
        //满足上述，返回true
        return true;
    }
}
